<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use DB;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        $isDebug = (bool) env('APP_DEBUG');
        if ($isDebug) {
            $callback = function ($sql) {
                foreach ($sql->bindings as $i => $binding) {
                    if ($binding instanceof \DateTime) {
                        $sql->bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
                    } else {
                        if (is_string($binding)) {
                            $sql->bindings[$i] = "'$binding'";
                        }
                    }
                }
                // Insert bindings into query
                $query = str_replace(array(
                    '%',
                    '?'
                ), array(
                    '%%',
                    '%s'
                ), $sql->sql);
                $dbName = $sql->connection->getDatabaseName();
                $sqlString = vsprintf($query, $sql->bindings);
                \App\Debugs::$sqls[] = $dbName . ' : ' . $sqlString;
            };
            DB::listen($callback);
        }
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}
